package com.fxu.framework.core.sql;

/**
 * SQuery, SUpdate 条件构造
 * <p> 泛型: SE ,表示Entity实体类 </p>
 *
 * @author 方旭
 * @since 2023-12-21
 * @version 1.6.1
 */
public final class SUtils {
    /**
     * 获取 SQuery&lt;T&gt;
     *
     * @param <T> 实体类泛型
     * @param clazz 实体类
     * @return SQuery&lt;T&gt;
     */
    public static <T extends SEntity<?>> SQuery<T> query(Class<T> clazz) {
        return new SQuery<>(clazz);
    }

    /**
     * 获取 SUpdate&lt;T&gt;
     *
     * @param <T> 实体类泛型
     * @param clazz 实体类
     * @return SUpdate&lt;T&gt;
     */
    public static <T extends SEntity<?>> SUpdate<T> update(Class<T> clazz) {
        return new SUpdate<>(clazz);
    }

    /**
     * 获取 SCascade&lt;T&gt;
     *
     * @param <T> 实体类泛型
     * @param clazz 实体类
     * @return SCascade&lt;T&gt;
     */
    public static <T extends SEntity<?>> SCascade<T> cascade(Class<T> clazz) {
        return new SCascade<>(clazz);
    }
}
